為什麼用C/C++編寫的程序只能用鍵盤輸入,而且輸出結果也只能在一個黑屏上顯示是一些字元?

能不能用滑鼠輸入,而且輸出一個界面,上邊有可用滑鼠此操作的按鈕?或輸出視頻、音頻等?一句話,上課學的這門課怎麼才能與現實中的應用軟體(比如QQ、知乎等)聯繫起來?要開發一個手機APP具體步驟是什麼?要學習哪些課程(具體的書名,我想自學)?


先問是不是,再問為什麼。

現在就教你如何用5行代碼脫離黑框框,而且不需要額外的配置就能玩:

#include &
int main() {
MessageBoxA(NULL, "Hello, world!", "Message", MB_ICONINFORMATION);
return 0;
}

(逃


相信我,大多數人的想法都跟你差不多。

初學c語言的時候,我也想著做遊戲,跑離黑框框,然後去了c語言吧(那時候還不知道知乎),看到了有人用c語言寫的個簡略版單機冒險島很興奮,後來要到了源碼發現也看不懂,那個時候定下的決心是先不想著做遊戲,慢慢把C語言啃完先再說(反正那時候就是有點天真吧。啥也不懂,就知道C語言)。

後來我接觸到了C#,學了http://ASP.NET,Unity,能做出來一些看起來很酷炫的東西了(也就2016上半年到8月份吧),很興奮,那時候一直以為自己編程水平很不錯了,有不懂的時候查網上的基本上也能看懂解決,也一直就沒多想什麼東西了。

直到2016年9月開學,學校組織了一個演算法賽,4個小時,我只AC了3題(還能排到前20。。),在考場的時候大汗淋漓,總感覺答案近在眼前但就是解不出來,加上一直覺得對數學有股愛好和天賦(相對其他科目的,如果是跟人比我已經不知道被甩到哪裡去了)後來老師跟我說我在沒學習過數據結構和演算法的情況下能做出來3題已經很厲害了(只是計算機專業,非科班,沒有數構和過多的編程課,偏網路) 。比完後學了點簡單的貪心動態規劃,剩下的題目在校內的OJ網都AC了,發現太有意思了,彷彿找回了以前討厭學任何科目,只喜歡把解數學題當玩的感覺(也就導致了我文科爛的一匹的原因吧)

後面的事情你們應該也猜到了,我就是入坑了

數據結構是二手的,所以有點舊,剩下兩本都是全新的

黑框框我又回來了

所以繞回來說題主的,雖然我多半是出於興趣,不過這麼多人工作後建議後輩補數構演算法,那種搭積木式編程以後想學也很輕鬆,而且再說了,知乎不是也有C語言做圖形遊戲專欄嗎,可以多項一起學習嘛

btw,C#真的很好


先學會走,再學會跑。

首先通過學習一門編程語言學會編程,會自己寫代碼解決問題。

1、滑鼠此操作的按鈕,這個是所謂的桌面程序開發。

2、手機APP 分ios,需要學習swift 或object c

安卓,需要學習java


為什麼答案這麼多在嘲諷題主,我覺得剛開始上學校課程學c/c++問這個很正常啊,這個問題在我們班問估計能答出來的也不超過5個,老師也沒涉及過。

不懂現在入門者隨便問兩個問題就開嘲諷模式,你們沒入過門一出生就是會飛的?


謝邀

如果你是在windows下編程,就稍微學下windows sdk、MFC開發界面。

現在都是移動時代了,你還是玩安卓或者iOS吧,網上教程夠多了。


可以學習一下 Qt 。


什麼程序都有輸入和輸出, 顯示在黑窗口裡的輸出更容易觀察和掌握. 當你玩了windows程序設計, 玩了各種服務和驅動的設計的時候, 你就會想方設法的讓這個黑窗戶再出來, 幫你輸出點什麼東西了.


因為你寫的這個叫做控制台程序。

控制台程序通常有 標準輸入 , 標準輸出, 標準錯誤 ,這三個東西來負責輸入,輸出,錯誤信息。一般情況下就是你看到的這個小黑框。

你可以通過「windows程序設計」這門課來學習使用windows api 來寫一個窗口程序。

純粹從學習的層面上去看,通過使用windows API寫一兩個簡單的小窗體程序,可以對整個GUI背後的東西有個了解。

至於真正的工作上的去寫,這個更多的是取決於開發效率和其他的東西,用不用c++都不一定的。


關鍵詞:

WinMain()

WNDCLASS

RegisterClass()

CreateWindow()

ShowWindow()

UpdateWindow()

GetMessage()

TranslateMessage()

DispatchMessage()

WndProc()

其餘請自行查資料解決。


試試Qt或者MFC,這倆都可以快速創造出非黑白窗口的界面。

身為一個Qt萌新,我是比較滋次Qt,Qt的設計師使你可以快速的用滑鼠拖拖動控制項,或者使用代碼來打造炫酷無比的界面,如果想要界面變得更炫酷則可以使用QML(Qt Quick),它兼容一部分的JS語法語法,自帶一大坨控制項,隨便你怎麼用。(當然功能的實現拖控制項就顯得力不從心啦,這就得用C++完成了~)

C/C++它本身就比較難,快速的創造出界面可以給我們一種激勵,給我們一些信心和動力,對於C++新手,這是墜吼的!


易……易語言?

好了,不坑答主了,乖乖的去學你的C就行了。

你這問題就好比在背「A、B、C、D……」的時候問老師,咱們什麼時候能閱讀英文報紙一樣。

因為這是基礎的基礎啊親……

P.S:想要做app,去看《android第一行代碼》就可以了,iOS 的可能會有開發工具的限制,反正是練手,從隨便一台電腦就能做起的android開始也挺好的。(題主本身配有蘋果四件套就當我沒說……)


我的c學炸了,用Java給你舉個例子吧。

鍵盤輸入輸出,黑屏,看樣子你用的還是控制台。當然控制台也可以玩出花來。

我斗膽猜測你大概對基本語法有些了解了?知道類或者是結構體是個啥,怎麼用,還有函數之類的。

這個級別大概是修仙小說里的練氣期,沒啥可說的,看書,做做題。

然後你說到滑鼠操作的界面,這個涉及到圖形界面編程,也不用想的多難,起碼Java還算簡單。

c/c艹的我不知道,Java無非就是awt和swing這兩個東西,最大的區別就是前者用的是系統自己的窗口樣式,swing是Java自己的窗口樣式。

然後就是布局啊監聽器什麼的,這些倒也還好,但是不要死啃書本,我是覺得背幾遍書不如自己上手做一個界面。。也不難,hello world級別的可能30行就差不多了。難點在於布局啊,按鈕能不能觸發事件啊,按叉子怎麼關不掉啊,怎麼關了後台還有啊這種無聊的問題。。其實把那幾個方法看了也差不多了,起碼能做個囫圇個兒,可能丑點。

到了這一步應該就算築基了,基本上來說,涉及到界面編程就會接觸到異常處理,如果只是自學學著寫個小東西的話也不用非常精通,知道有什麼類型的異常,出了異常之後的邏輯就可以了。

然後看到你說手機app我就樂了,這事Java干還真合適,ios還得自己學obc,我先說安卓吧。

安卓開發一般是兩個工具,基於eclipse的adt插件和android studio,我是智障只用過adt,是挺不方便的,安裝還麻煩。。聽說as體驗好很多,不知真假反正沒用過。

安卓編程的話一定會涉及到界面,mainactivity肯定要有東西。

安卓編程也分體量,小的你寫個helloworld級別的也可以,反正你是學,還沒有到要做的時候。

邏輯基本都是一樣的,但是要根據做的東西是什麼來設計自己的邏輯,語言只是基本,邏輯很重要。

如果你能到安卓開發這一步了,我覺得就算你還不能做出來一個中等規模的東西,也知道為了做這個東西需要幹什麼了。

大概相當於結丹吧。

至於ios,需要學Objective-C,這個東西說是C語言的超集,但是說實話我感覺我一點都看不懂。。據說是用消息什麼的,沒怎麼涉獵過,就不胡說八道了。好像還得用mac電腦才能寫,如果你是一開始就定了這個方向要這麼走的話那就去試試,不是的話。。我覺得先從別的開始吧。

我能理解想用自己寫的代碼做出東西的渴望,我第一次做出來一個有界面的東西的時候,覺得它好看極了,非常有成就感。雖然只是一個雜亂不堪而且功能很少的軟體。

這種渴望可能是很多人學習編程的動力吧,可以理解,但是我覺得還是不要心急,慢慢來,一步一步走,就算真的用那些「零基礎」「小白級別」「傻瓜式」的教程複製粘貼了一個東西出來,那也不如你幾個晚上絞盡腦汁終於做出來的東西更能讓你感到快樂。

學習是沒有速成的捷徑的,必須要一步一步來。不要覺得很難,慢慢走就好了。

我的c很垃圾,就不誤人子弟了。Java如果想入門,head first或許還可以。但是這只是一本幾乎可以說是科普書的存在,和自行車的輔助輪一樣,你學會了之後就把它扔掉吧,之後哪怕你自己歪歪扭扭地騎,學的速度也會快的飛起。

最後還是建議,找點題或者是小型的項目,試著去做,有不會的就用搜索引擎去查,須知普通學生+搜索引擎=普通程序員。可能初期你會覺得很難很枯燥不想學了,但是一旦做出來,你的水平會有質的提高。

不要過於高估以上說的那些的難度,也不要分分鐘覺得自己是技術大牛,什麼事做下來都不難的,不要浮躁不要三分鐘熱度。

舉個例子吧,我當年怎麼學的Java呢。。是因為我們有一門課,在沒教過Java的情況下要求一個月內做出來一個能實現功能的軟體。可想而知我那段時間是怎麼度過的,head first java看了不到一百頁的水平。。

最後是最後一周熬幾個晚上(實際上好像用了3天吧,3個通宵)就做出來了一個雖然丑也不溫柔但是湊合能用的東西。。也算是做出來了。

之後幾次作業就輕車熟路了,不能說很簡單,至少不會抓耳撓腮成那個樣子了。

所以說,不要急躁,慢慢來,總會解決的。


噗,你們不要嘲諷題主了。題主想寫GUI漲點成就感也沒什麼不好嘛。

要寫你說的那種程序,首先你得學習c++的面向對象編程,如果你已經學過的話,直接上網查「QT學習之路」,很優秀的qt教程,跟著做,半天就能做出個像樣的桌面應用程序了。

最後再說一句,很多答主嘲諷你是因為你的問題描述看起來太急功近利了,GUI其實不神秘,用各種框架的話也就是調調API,就像上面寫的,你照著教程半天就能寫個出來,但是要寫好的話你要學很多知識,比如c++的面向對象,這可不是半天就能搞定的。

最後,作為計科學生,請善用搜索引擎,這種問題放到知乎上來問被噴很正常。


能,Qt、MFC、C++/CLI + Winform、C++ Builder+VCL/Firemonkey等方案,都可以。

但是

學會走再考慮去跑吧,不然你這跑得會七倒八歪的。

具體點說,基礎先搞好,不然寫這種程序,你自己寫得慢+寫得痛苦,寫出來的東西質量稀爛。


C. C++ C# Windows程序設計 大概就是這個流程


我給題主的答案就繼續學下去你會遇到你說的哪些東西的,底層和基礎的東西很重要


首先為你提出這樣的問題點贊,如果你是一個學生,思考到這一步說明你已經比很多同學優秀了。

其實這個問題的答案是什麼並不重要,關鍵是它背後的一系列子問題:你所看到的黑乎乎的終端本質是什麼,應用程序間是如何通過stdout/stdin/stderr交換信息的,你所看到的那些能點擊的按鈕本質又是什麼,操作系統/編譯器為了讓你那簡短的幾行代碼能夠呈現出這樣的效果做了哪些事情,等等等。


學生的話還是踏實學C/C++基礎吧,對以後有好處。如果想搞一些小軟體玩玩,可以試試易語言。


哈哈,是不是像我等沒天賦的人第一次運行自己寫的c程序時都會這樣想。慢慢來,沒事就多百度百度,雖然應該推薦谷歌,但是這種寫著玩的東西百度搜搜都有啦。祝好運。


看起來很厲害的東西很多時候是最不重要的。

很多時候,GUI圖形界面都不是必須的,甚至是可有可無的東西。

類似QQ之類的聊天程序沒有圖形界面也是可以實現的,只不過對大部分群體來說增加了一些學習成本。

知乎從某種程度上來說就是一個基於Https的文字帶圖片的論壇,伺服器後端跑的同樣應該也不是圖形界面。

Unix/Linux/Windows/macOS下都有成千上萬的CLI(命令用戶界面,就是題主說的鍵盤輸入)程序,甚至很多程序允許你選擇用GUI或者CLI

———————————————————————————————————————————

「又寫了個小項目啊?」

「是啊,小爬蟲。」

「要不要給它畫個界面啊?」

"好麻煩啊,反正這樣也可以用。回來等有空再說吧。"

(。。。然後就沒有然後了)

當然很多工業級的代碼產品還是需要圖形界面的,但是對開發者來說,這個不重要,因為這些東西應該專門交給設計師的去畫。

產品經理分析需求,做可行性分析,出需求報告,統籌開發計劃;

開發者關注問題,建立模型,解決問題,寫代碼;

測試師構建測試用例,測試代碼;

設計師設計用戶界面。

編程的本質是解決問題。因而我認為,對問題的分析能力以及代碼的設計和實現能力,才是程序員最重要的能力。


推薦閱讀:

現在C++11/14有很多公司在用嗎?
一段很有意思的代碼,你能說出為什麼結果是這樣嗎?
既然c++的非virtual的函數可以重定義,virtual函數相比非virtual的有什麼優勢?
用MFC做的貪吃蛇遊戲,求大神。?
C++ primer 第四版這段關於vector的程序是否有未定義的行為?

TAG:CC | app製作開發 |